home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 221_01 / ccroot.asm < prev    next >
Assembly Source File  |  1980-01-01  |  1KB  |  60 lines

  1. *
  2. *  root module for small-c compiler
  3. *  written by dieter flunkert
  4. *  22 feb 1986    version A.01
  5. *  functions:
  6. *   - set up stack pointer
  7. *   - get argc and argv values
  8. *     (fetch command line)
  9. *
  10.  EXT main
  11.  NAME CCROOT
  12.  GLOBAL CCROOT
  13. CCROOT
  14.  LIB CCEQU.ASM
  15.  STS STACK SAVE STACK
  16.  LDS MEMEND SET NEW ONE
  17.  LEAS -2,S
  18.  LDX #LINBUF GET INPUT BUFFER ADR
  19.  LDB #1 ONE ARGUMENT ALREADY (THIS IS THE PROGRAM NAME)
  20. CCROOT0 PSHS X SAVE ARGUMENT POINTER
  21.  LDA #13
  22.  CMPA ,X END OF INPUT?
  23.  BEQ CCROOT1 IF YES CONTINUE THERE
  24.  LDA #$20
  25.  CMPA ,X+ END OF ARGUMENT?
  26.  BNE CCROOT0+2 NO, DO IT AGAIN
  27.  CLR -1,X YES, SET END ID = \n
  28.  INCB BUMP ARGUMENT COUNTER
  29.  CMPA ,X NOW SKIP SPACES
  30.  BNE CCROOT0 NOTHING TO SKIP
  31.  LEAX 1,X ELSE ACVANCE BUFFER POINTER
  32.  BRA *-6 AND LOOP
  33. CCROOT1 CLR ,X YES, SET END = \n
  34.  CLRA
  35.  PSHS D argc on stack
  36.  LEAX 2,S argv on stack
  37.  PSHS X
  38. *
  39. * rearange argument pointers
  40. *
  41.  LEAY 4,S GET LAST ARG POINTER
  42.  LDX MEMEND AND ALSO FIRST ONE
  43.  LEAX -2,X
  44. CCROOT2 LEAX -2,X
  45.  PSHS X
  46.  CMPY ,S++ FIRST = LAST?
  47.  BHS CCROOT3 YES, DONE
  48.  LDD ,X ELSE CHANGE ARG POINTERS
  49.  PSHS D
  50.  LDD ,Y
  51.  STD ,X
  52.  PULS D
  53.  STD ,Y++
  54.  BRA CCROOT2
  55. CCROOT3 LBSR main
  56.  LDS STACK RESET STACK TO OLD VALUE
  57.  JMP WARMS
  58. STACK RMB 2
  59.  END CCROOT
  60.